package com.lan.seriousphysics.screens.experimentos;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Slider;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.lan.seriousphysics.SeriousPhysicsMain;
import com.lan.seriousphysics.screens.AbstractScreen;
import com.lan.seriousphysics.screens.experimentMenus.OndasScreen;

public class Colores extends AbstractScreen {

	private Slider slideColores;

	Label longitudOnda, frecuencia;
	Float frecuenciaValor,longOndaValor;
	Sprite sp;
	float rojo, verde, azul;

	private static final float MIN = (float) 0.0;
	private static final float MAX = 1;
	private static final float velocidadLuz=299792458;

	private Texture cajaColorTextura;
	private TextureRegion cajaColorRegion;

	Label lDesc;
	
	public Colores(SeriousPhysicsMain game) {
		super(game);
		// TODO Auto-generated constructor stub
	}

	public void show() {
		super.show();
		getBatch();
		
		previousScreen = new OndasScreen(game,"ONDAS");
		
		rojo = 1;
		verde = 0;
		azul = 0;
		setBackground("fondo.png");


		cajaColorTextura = new Texture("blanco.png");

		cajaColorTextura.setFilter(TextureFilter.Linear, TextureFilter.Linear);

		cajaColorRegion = new TextureRegion(cajaColorTextura, 0, 412, 100, 100);

		sp = new Sprite(cajaColorRegion);

		Table table = super.getTable();
		
		lDesc = new Label(res.getString("COLORESD"), getSkin(), "menus");
		table.add(lDesc).spaceBottom(50);
		table.row();

		float d = (float) 0.01;
		slideColores = new Slider(MIN, MAX, d, false, getSkin());

		table.add(slideColores).spaceBottom(50).expandX().minWidth(300);
		table.row();
		frecuenciaValor = (float) 450;
		frecuencia = new Label(res.getString("FRECUENCIA") + " " + Float.toString(frecuenciaValor)  + " 10exp12 Hz",getSkin());
		table.add(frecuencia);
		table.row();
		
		longOndaValor = (float) (velocidadLuz/(frecuenciaValor * Math.pow(10, 12)));
		longitudOnda = new Label(res.getString("LONGITUD_ONDA") + " " + Float.toString(longOndaValor)  + " m",getSkin());
		table.add(longitudOnda);
		table.row();

	}

	@Override
	public void render(float delta) {
		super.render(delta);
		
		calculosFrecuencia();
		
		frecuenciaValor = (float) Math.round(450 + slideColores.getValue()*275);
		longOndaValor = (float) (velocidadLuz/(frecuenciaValor * Math.pow(10, 12)));
		
		frecuencia.setText(res.getString("FRECUENCIA") + " " + Float.toString(frecuenciaValor)  + " 10exp12 Hz");
		longitudOnda.setText(res.getString("LONGITUD_ONDA") + " " + Float.toString(longOndaValor)  + " m");
		
		batch.begin();
		batch.setColor(rojo, verde, azul, 1);
		batch.draw(cajaColorRegion, 50, 170);
		// sp.draw(batch);
		batch.end();
	}

	public void calculosFrecuencia() {

		if (slideColores.getValue() >= 0 && slideColores.getValue() <= 0.24) {
			rojo = 1;
			azul = 0;
			verde = (float) (slideColores.getValue() / 0.24);

		} else if (slideColores.getValue() > 0.24 && slideColores.getValue() <= 0.55) {
			
			float valor = (float) ((slideColores.getValue()-0.24) / 0.31);
			rojo = (float) (1 - valor);
			verde = 1;
			azul = 0;

		} else if (slideColores.getValue() > 0.55 && slideColores.getValue() <= 0.64) {
			azul = (float) ((slideColores.getValue()-0.55) / 0.09);
			verde = 1;
			rojo = 0;
		} else if (slideColores.getValue() > 0.64 && slideColores.getValue() <= 0.73) {
			verde = (float) (1 - ((slideColores.getValue()-0.64) / 0.09));
			azul = 1;
			rojo = 0;
		} else if (slideColores.getValue() > 0.73 && slideColores.getValue() <= 1) {
			rojo = (float) ((slideColores.getValue() / 1) - 0.5);
			azul = (float) (1 - ((slideColores.getValue() - 0.73) / 0.7));
			verde = 0;
		}

	}
}
